home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 8 / Mac Magazin and MacEasy Magazine CD - Issue 08.iso / Sharewarebibliothek / Musik / SoundEffects ƒ / SoundEffects Developer’s Kit / Gain ƒ / GainSettings.c < prev   
C/C++ Source or Header  |  1994-11-20  |  2KB  |  94 lines

  1. #include "Glue.h"
  2. #include "Gain.h"
  3. #include "ModSetups.h"
  4.  
  5. #define    kNumDialogItems    3
  6.  
  7.  
  8. pascal OSErr settings(ModParamsPtr modInfo, GluePtr glue, ModSettingsHandle *prefs)
  9. {
  10.     ItemInfoHandle    myItemInfo;
  11.     long            myGain;
  12.     OSErr            error;
  13.     
  14.     
  15.     // load the last used settings.
  16.     
  17.     error = GetModSettings(modInfo, glue, prefs);
  18.     if (error)
  19.         return error;
  20.     
  21.     myGain = (**prefs)->gain;
  22.     DisposHandle((Handle)*prefs);
  23.     *prefs = 0L;
  24.     
  25.     
  26.     // set up and show the settings dialog.
  27.     
  28.     myItemInfo = (ItemInfoHandle)NewHandleClear(sizeof(ItemInfoRec) * kNumDialogItems);
  29.     if (myItemInfo == 0L)
  30.         return kModNotEnoughMemory;
  31.     
  32.     (*myItemInfo)[0].type = type_ignore;
  33.     (*myItemInfo)[0].param = 0L;
  34.     (*myItemInfo)[1].type = type_ignore;
  35.     (*myItemInfo)[1].param = 0L;
  36.     (*myItemInfo)[2].type = type_editFieldNumerical;
  37.     (*myItemInfo)[2].param = (long)&myGain;
  38.     
  39.     error = (*glue->ModDoSettingsDialog)(modInfo, myItemInfo, false, 0L, 0L, 0L);
  40.     DisposHandle((Handle)myItemInfo);
  41.     if (error)
  42.         return error;
  43.     
  44.     
  45.     // save the new settings in the *prefs handle.
  46.     
  47.     *prefs = (ModSettingsHandle)NewHandle(sizeof(ModSettingsRec));
  48.     if (*prefs)
  49.     {
  50.         if (myGain > 32767)
  51.             myGain = 32767;
  52.         (**prefs)->gain = myGain;
  53.         
  54.         error = (*glue->SaveEffectSettings)(kModSignature, prefs);
  55.         
  56.         // we must not dispose of the handle, since the ‘effect’ routine may be called
  57.         // immediately after us, and it’ll need it. If the handle  is not needed, it
  58.         // will be automatically disposed of.
  59.     }
  60.     else
  61.         return kModNotEnoughMemory;
  62.     
  63.     return noErr;
  64. }
  65.  
  66.  
  67. pascal OSErr GetModSettings(ModParamsPtr modInfo, GluePtr glue, ModSettingsHandle *prefs)
  68. {
  69.     // this routine loads the settings. If no settings can be found, but the
  70.     // module requires them, it has to store default settings in a new handle.
  71.     //
  72.     // If the module doesn’t require any parameters, this routine can just return.
  73.     
  74.     OSErr        error;
  75.     
  76.     error = (*glue->LoadEffectSettings)(kModSignature, prefs);
  77.     if (error || *prefs == 0L)
  78.     {
  79.         *prefs = (ModSettingsHandle)NewHandle(sizeof(ModSettingsRec));
  80.         
  81.         if (*prefs)
  82.         {
  83.             // Set the default settings.
  84.             
  85.             (**prefs)->gain = 200;
  86.             
  87.             error = kModNoError;
  88.         }
  89.         else
  90.             error = kModNotEnoughMemory;
  91.     }
  92.     
  93.     return error;
  94. }